/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package satk.objetos;

import java.io.Serializable;
import java.util.List;

/**
 *
 * @author Base
 */
public class Usuario
        implements satk.beans.interfaces.IntObjetos, Serializable {

    private int identificador = 0;
    private String nombreUsuario;
    private String rol;
    private String password;
    private Institucion institucion;

    public Usuario() {
        this.nombreUsuario = "";
        this.rol = "";
        this.institucion = new Institucion();
    }

    public Usuario(String nombreUsuario, String rol, Institucion institucion) {
        this.nombreUsuario = nombreUsuario;
        this.rol = rol;
        this.institucion = institucion;
    }

    @Override
    public Integer getIdentificador() {
        return identificador;
    }

    @Override
    public void setIdentificador(Integer id) {
        this.identificador = id;
    }

    public void setNombreUsuario(String nombreUsuario) {
        this.nombreUsuario = nombreUsuario;
    }

    public String getNombreUsuario() {
        return nombreUsuario;
    }

    public void setRol(String rol) {
        this.rol = rol;
    }

    public String getRol() {
        return rol;
    }

    public Institucion getInstitucion() {
        return institucion;
    }

    public void setInstitucion(Institucion institucion) {
        this.institucion = institucion;
    }

    public void setPassword(String pas) {
        this.password = pas;
    }

    public String getPassword() {
        return password;
    }

    @Override
    public Object clon() {
        try {
            return this.clone();
        } catch (CloneNotSupportedException ex) {
        }
        return null;
    }

    @Override
    public String toString() {
        return String.format("USER@%d;%s;%s", identificador, nombreUsuario, rol);
    }

    @Override
    public List<Throwable> valida() {
        java.util.List<Throwable> list = new java.util.LinkedList<Throwable>();
        if(nombreUsuario.isEmpty()){
            list.add(new Throwable("Espesificar un nombre de usuario"));
        }
        if(password.isEmpty()){
            list.add(new Throwable("Espesificar una contraseña"));
        }
        return list;
    }
}
